package leetcode.erfen;

/**
 已知存在一个按非降序排列的整数数组 nums ，数组中的值不必互不相同。

 给你 旋转后 的数组 nums 和一个整数 target ，请你编写一个函数来判断给定的目标值是否存在于数组中。
 如果 nums 中存在这个目标值 target ，则返回 true ，否则返回 false 。

 输入：nums = [2,5,6,0,0,1,2], target = 0
 输出：true
 */
public class Search81 {
    public boolean search(int[] nums, int target) {
            int l=0,r=nums.length-1;

            while (l<=r){
                int mid = l+(r-l)/2;

                if(nums[mid] == target)
                    return true;

                if(nums[mid]==nums[l]) {//排除掉重复数字
                    l++;
                    continue;
                }
                if(nums[mid]<=nums[r]){//右边区间有序
                    if(target<=nums[r] && target>nums[mid]){
                        l = mid+1;
                    }else
                        r = mid-1;

                }else {//左区间有序
                    if(target<nums[mid] && target>=nums[l]){//是否在左区间
                        r = mid-1;
                    }else
                        l = mid+1;
                }
            }
            return  false;
    }
}